C# 设计模式之Abstract Factory 抽象工厂(概念)
那么就是适用于抽象工厂模式) ② 系列对象 指的是这些对象之间又相互依赖关系,绿化过的路等等各种类型 假设一个新类型WaterRoad水路 就要改成return new WaterRoad(); 再隐身如果需要创造更多类型的时候,简单的静态工厂完全可以。
往往存在更多系列对象的创建工作,例如:游戏开发场景中的道路与房屋的依赖,丛林等等... ... ② 问题 如果绕过常规的对象创建方法(new), Abstract Factory 抽象工厂(创建型模式) 一,无需指定他们具体的类,程序相对来说不是稳定的 不能应对不同系列的变化, 复制代码 代码示例: class Road { } class RoadFactory { public static Road CreateRoad() { return new Road(); } } class Program { static void Main(string[] args) { RoadFactory roadFactory = new RoadFactory(); Road road = RoadFactory.CreateRoad(); } } ② 当我们想改变 return new Road();的内容的时候只需要在RoadFactory工厂类中进行改变 比如我们想new 一个新的道路类型,比如泥路,提供一种封装机制来避免客户程序和这种多系列具体对象创建工作的紧耦合,----《设计模式》GoF 四,而非依赖于实现,又不能为每一个系列创建工厂,其缺点在于难以应对新对象的需求变动 ④ 抽象工厂模式经常和Factory Method(工厂方法)模式共同组合来应对对象创建的需求变化,因此就封装对象创建面向接口IT之家,让该接口负责创建一系列相关或者相互依赖的对象。
创建工厂模式的动机 ① 在软件系统中。
由于需求的变化,该模式使用的注意事项 ① 如果没有应对多系列对象构建的需求变化, ※部分是重点 ③ 意图:提供一个接口,比如BuildingFactory。
水路,工厂模式的缘起 ① 既然变化点在于对象创建, , (如果是稳定的几个类型,设计模式很多就是要解决变化点的封装, 三,就需要应对更为复杂的变化 比如我们可以这样改变RoadFactory 复制代码 代码示例: class Road { } class Building { } //建筑 class Tunnel { } //地道 class Jungle { } //丛林 class RoadFactory { public static Road CreateRoad() { return new Road(); } public static Building CreateBuilding() { return new Building(); } public static Tunnel CreateTunnel() { return new Tunnel(); } public static Jungle CreateJungle() { return new Jungle(); } } class Program { static void Main(string[] args) { Road road = RoadFactory.CreateRoad(); Building building = RoadFactory.CreateBuilding(); } } ③问题: 用静态方法的方式实现工厂类, 比如不同风格的道路,航路。
或作用的关系,只是风格(系列)发生变化的话, 来看一个简单的方法,经常面临一系列相互依赖的对象的创建工作;同时,则没有必要使用抽象工厂,不能应对具体实例化类型的变化 ③ 对应的解决思路: 封装变化点 - 那里变化,常规的方式依赖于new, 而抽象工厂要讨论的问题就是,道路与地道的依赖 ③ 抽象工厂模式主要在于应对 有新系列的需求变动,那么还是会有存在变化点的问题,当然不需要封装) ※封装变化点,地道,可以实现依赖于接口,new的问题 ① 创建型模式主要解决的就是一个new的问题 常规的对象创建方法 Road road = new Road(); ② new的问题 模式设计很多是由于new的方式引起的,找到变化点,TunnelFactory等,并进行封装 二,那里封装(如果没有变化,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jq/jc/9458.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
PHP识别相片是否是颠倒的
时间:2020-12-28
-
python编程有哪些ide
时间:2020-12-28
-
python开发工程师是做什么
时间:2020-12-28
-
php构造函数的作用
时间:2020-12-28
-
php怎么跟数据库连接
时间:2020-12-28
-
php实现顺序线性表
时间:2020-12-28
-
Python多重继承中的菱形继
时间:2020-12-28
-
php中break的作用
时间:2020-12-28
热门文章
-
php中常用的正则表达式使用方法
时间:2020-12-25
-
asp与php区别是什么?
时间:2020-12-27
-
PHP识别相片是否是颠倒的,并且重新摆正
时间:2020-12-28
-
Yii授权之基于角色的存取控制 (RBAC)
时间:2020-12-23
-
php的一键安装包有哪些 php环境搭建
时间:2020-12-19
-
php实现对图片对称加解密(适用身份证加
时间:2020-12-25
-
php如何理解面向对象
时间:2020-12-28
-
超详细分析php docker的原理及作用
时间:2020-12-27
-
Python控制Excel实现自动化办公
时间:2020-12-23
-
session的作用是什么
时间:2020-12-25
